package com.spark.common.core.entity.system;

import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.spark.common.annotation.Dict;
import com.spark.common.annotation.query.Query;
import com.spark.common.constants.QueryConstants;
import com.spark.common.core.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

/**
 * 系统操作日志
 *
 * @author LYCHEE
 * @date 2025/03/25 09:48
 */
@Data
@TableName("sys_operate_log")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
public class SysOperateLog extends BaseEntity {

    /**
     * 模块
     */
    @Query(QueryConstants.QUERY_LIKE)
    private java.lang.String moduleName;

    /**
     * 业务类型
     *  : 0查询 1新增 2修改 3删除 4导入 5导出 99其他
     */
    @Query(QueryConstants.QUERY_EQ)
    @Dict(dictCode = "operate_type")
    private java.lang.Integer businessType;

    /**
     * 方法名称
     */
    private java.lang.String methodName;

    /**
     * 请求方式
     */
    private java.lang.String requestMethod;

    /**
     * 操作类别
     *  : 0其它 1后台用户 2手机端用户
     */
    private java.lang.Integer operatorType;

    /**
     * 操作人员
     */
    private java.lang.String operName;

    /**
     * 部门名称
     */
    private java.lang.String deptName;

    /**
     * 请求URL
     */
    private java.lang.String operUrl;

    /**
     * 主机地址
     */
    private java.lang.String operIp;

    /**
     * 操作地点
     */
    @Query(QueryConstants.QUERY_LIKE)
    private java.lang.String operLocation;

    /**
     * 请求参数
     */
    private java.lang.String operParam;

    /**
     * 响应参数
     */
    private java.lang.String jsonResult;

    /**
     * 操作状态
     *  : 0成功 1失败
     */
    @Query(QueryConstants.QUERY_EQ)
    @Dict(dictCode = "ok_fail")
    private java.lang.Integer status;

    /**
     * 错误消息
     */
    private java.lang.String errorMsg;

    /**
     * 操作时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private java.util.Date operTime;

    /**
     * 消耗时间
     */
    private java.lang.Long costTime;

}
